// #ifndef BUFFANDEFFECT_HH
// #define BUFFANDEFFECT_HH

// #include "ICharacter.hh"
// #include <iostream>
// #include <string>
// #include <algorithm>

// namespace buff_and_effect
// {   
//     class Abuff
//     {
//     protected:
//         unsigned damage;
//         int rounds;
//         ICharacter& target;
//         std::string buff_name;
//     public:
//         Abuff();

//         unsigned getDamage() const;
//         int getRounds() const;
//         ICharacter& getTarget() const;
//         std::string getBuffName() const;
//         std::string samllInfo() const;
//         std::string bigInfo() const;

//         virtual void effect();

//         bool operator==(const Abuff& other_buff) const;
//         Abuff& operator+=(const Abuff& other_buff);
//     };
    
//     class bleed : public Abuff//流血
//     {
//     public:
//         bleed(unsigned damage, int rounds, ICharacter& target);

//         void effect() override;
//     };
    
//     class blight : public Abuff//中毒
//     {
//     public:
//         blight(unsigned damage, int rounds, ICharacter& target);

//         void effect() override;
//     };

//     class stun : public Abuff//眩晕
//     {
//     public:
//         stun(ICharacter& target);

//         void effect() override;
//     };
// } // namespace buff


// #endif